/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.bld.modulo.web.bean.controlacesso;

import br.com.bld.model.usuario.UsuarioBe;
import br.com.bld.model.usuario.UsuarioEntity;
import br.com.bld.util.seguranca.BLDCriptografia;
import java.security.NoSuchAlgorithmException;
import java.io.Serializable;
import java.sql.SQLException;
import javax.enterprise.context.SessionScoped;
import javax.faces.bean.ManagedBean;
import javax.inject.Named;
/**
 *
 * @author Pedro
 */
@Named(value = "controleAcessoSessionBean")
@ManagedBean
@SessionScoped
public class ControleAcessoSessionBean implements Serializable{

    private UsuarioEntity usuarioEntity = null;
    private Boolean autorizado = false;
    private String erro = "";
    private String email;
    private String senha;
    private String primeiroNome;
    /**
     * Creates a new instance of ControleAcessoSessionBean
     */
    public ControleAcessoSessionBean() {
    }

    public void efetuarLogin() {

        try {
            UsuarioBe be = new UsuarioBe();

            if (getEmail() == null || getEmail().equals("")) {
                setErro("Campo email não informado");
                autorizado = getAutorizado();
                return;
            }

            if (getSenha() == null || getSenha().equals("")) {
                setErro("Campo senha não informado");
                autorizado =  getAutorizado();
                return;
            }

            usuarioEntity = be.selectByEmail(getEmail());

            if (usuarioEntity == null) {
                setErro("Acesso não autorizado!");
                autorizado =  getAutorizado();
                return;
            } else {
                String senhaCriptografada = BLDCriptografia.getMD5(getSenha());

                if (!senhaCriptografada.equals(usuarioEntity.getSenha())) {
                    setErro("Acesso não autorizado!");
                    autorizado =  getAutorizado();
                    return;
                }
                else {
                    setPrimeiroNome(usuarioEntity.getPrimeiroNome());
                    setAutorizado((Boolean) true);
                }

            }

        } catch (SQLException | NoSuchAlgorithmException e) {
            StringBuilder str = new StringBuilder();

            str.append(e.getMessage());
            for (StackTraceElement s : e.getStackTrace()) {
                str.append(s.toString()).append("\n");
            }

            setErro(str.toString());
        }
    }

    /**
     * @return the autorizado
     */
    public Boolean getAutorizado() {
        return autorizado;
    }

    /**
     * @param autorizado the autorizado to set
     */
    public void setAutorizado(Boolean autorizado) {
        this.autorizado = autorizado;
    }

    /**
     * @return the erro
     */
    public String getErro() {
        return erro;
    }

    /**
     * @param erro the erro to set
     */
    public void setErro(String erro) {
        this.erro = erro;
    }

    /**
     * @return the email
     */
    public String getEmail() {
        return email;
    }

    /**
     * @param email the email to set
     */
    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * @return the senha
     */
    public String getSenha() {
        return senha;
    }

    /**
     * @param senha the senha to set
     */
    public void setSenha(String senha) {
        this.senha = senha;
    }

    /**
     * @return the primeiroNome
     */
    public String getPrimeiroNome() {
        return primeiroNome;
    }

    /**
     * @param primeiroNome the primeiroNome to set
     */
    public void setPrimeiroNome(String primeiroNome) {
        this.primeiroNome = primeiroNome;
    }

}
